|
|
POV-Ray currently applies gamma correction before antialiasing, while it
should be applied after antialiasing, since averaging of colors must be done
in a linear color space. For a sample picture that make this problem very
obvious, see the thread "Anti-Aliasing Problem including sample image (58k)"
in povray.binaries.images.
Here's a patch:
--- povwin-3.5-orig/source/render.cpp Sun Jul 28 00:55:32 2002
+++ povwin-3.5/source/render.cpp Wed Nov 27 13:31:48 2002
@@ -1571,6 +1571,7 @@ void Start_Adaptive_Tracing()
POV_PRE_PIXEL (x, Current_Line_Number, Colour)
trace_sub_pixel(1, Block, x, Current_Line_Number, 0, 0,
sub_pixel_size, sub_pixel_size, sub_pixel_size, Colour, antialias_line);
+ gamma_correct(Colour);
POV_POST_PIXEL (x, Current_Line_Number, Colour)
/* Do histogram stuff. */
@@ -2084,7 +2085,6 @@ static void supersample(COLOUR result, i
Clip_Colour(colour, colour);
- gamma_correct(colour);
Add_Colour(result, result, colour);
}
else
@@ -2100,6 +2100,7 @@ static void supersample(COLOUR result, i
/* Average pixel's color. */
Scale_Colour(result,result,(1.0/samples));
+ gamma_correct(result);
}
@@ -2330,8 +2331,6 @@ static void trace_ray_with_offset(int x,
}
Clip_Colour(Colour, Colour);
-
- gamma_correct(Colour);
}
else
{
--
light_source{6#local D=#macro B(E)#macro A(D)#declare E=(E-#declare
C=mod(E D);C)/D;C#end#while(E)#if(A(8)=7)#declare D=D+2.8;#else#if(
C>2)}torus{1..2clipped_by{box{-2y}}rotate<1 0C>*90translate<D+1A(2)
*2+1#else}cylinder{0(C-v=1).2translate<D+C*A(2)A(4)#end-2 13>finish
{specular 1}pigment{rgb x}#end#end#end-8;1B(445000298)B(519053970)B
(483402386)B(1445571258)B(77778740)B(541684549)B(42677491)B(70)}
Post a reply to this message
|
|